package com.yy.wga.pay.feign.request.third;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

/**
 * 微信支付回调解密后内容
 */
@Data
public class WechatTransferNotifyDecodeRequest {

    /**
     * 应用ID
     */
    @JSONField(name = "appid")
    private String appId;

    /**
     * 商户号
     */
    @JSONField(name = "mchid")
    private String mchId;

    /**
     * 商家批次单号
     */
    @JSONField(name = "out_batch_no")
    private String outBatchNo;

    /**
     * 微信批次单号
     */
    @JSONField(name = "batch_id")
    private String batchId;

    /**
     * WAIT_PAY: 待付款确认。需要付款出资商户在商家助手小程序或服务商助手小程序进行付款确认
     * ACCEPTED:已受理。批次已受理成功，若发起批量转账的30分钟后，转账批次单仍处于该状态，可能原因是商户账户余额不足等。商户可查询账户资金流水，若该笔转账批次单的扣款已经发生，则表示批次已经进入转账中，请再次查单确认
     * PROCESSING:转账中。已开始处理批次内的转账明细单
     * FINISHED:已完成。批次内的所有转账明细单都已处理完成
     * CLOSED:已关闭。可查询具体的批次关闭原因确认
     */
    @JSONField(name = "batch_status")
    private String batchStatus;
    /**
     * 转账总笔数
     */
    @JSONField(name = "total_num")
    private Integer totalNum;
    /**
     * 转账成功的笔数。当批次状态为“PROCESSING”（转账中）时，转账成功笔数随时可能变化
     */
    @JSONField(name = "success_num")
    private Integer successNum;
    /**
     * 转账成功的金额，单位为“分”
     */
    @JSONField(name = "success_amount")
    private Integer successAmount;
    /**
     * 转账失败的笔数
     */
    @JSONField(name = "fail_num")
    private Integer failNum;
    /**
     * 转账失败的金额，单位为“分”
     */
    @JSONField(name = "fail_amount")
    private Integer failAmount;

    /**
     * 如果批次单状态为“CLOSED”（已关闭），则有关闭原因
     * 可选取值：
     * OVERDUE_CLOSE：系统超时关闭，可能原因账户余额不足或其他错误
     * TRANSFER_SCENE_INVALID：付款确认时，转账场景已不可用，系统做关单处理
     */
    @JSONField(name = "close_reason")
    private String closeReason;

    /**
     * 批次更新时间 格式：YYYY-MM-DDTHH:mm:ss+TIMEZONE
     */
    @JSONField(name = "update_time")
    private String updateTime;

    private String appKey;
}
